home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_asm / objxref / xrpobj.asm < prev    next >
Encoding:
Assembly Source File  |  1986-04-25  |  2.9 KB  |  121 lines

  1.  PAGE    81,128
  2.  TITLE    XRPOBJ    - Process an OBJ file
  3.  SUBTTL    V1.0 - May 1986    - Cross    Reference Facility
  4. ;
  5. ;=============================================================================|
  6. ;         Copyright 1986 - Dan Daetwyler - Springdale, AR 72764          |
  7. ;=============================================================================|
  8.     .SALL
  9. ;
  10. DATA    SEGMENT    BYTE PUBLIC 'DATA'
  11. ;
  12.     EXTRN    DTAS:WORD,DTAN:BYTE,FHAN:WORD
  13. ;
  14.     PUBLIC    FBUF,RCODE,RLEN,VALID,EMSG,IMSG,IMX
  15. ;
  16. FBUF    DB    1024 DUP (?)        ;Record    buffer
  17. RCODE    DB    ?            ;Type record
  18. RLEN    DW    ?            ;Record    length
  19. ;
  20. VALID    DB    7AH,7CH,88H,8EH,94H,96H,98H,9AH,9CH,0A0H,0A2H
  21. ;
  22. EMSG    DB    13,10,'Did not find MODEND record for module$'
  23. IMSG    DB    13,10,'Found record type: '
  24. IMX    DB    ?,?
  25.     DB    ' - Invalid type$'
  26. ;
  27. DATA    ENDS
  28. ;
  29. CODE    SEGMENT    BYTE PUBLIC 'CODE'
  30.     ASSUME    CS:CODE,DS:DATA,ES:DATA
  31. ;
  32. ;==============================================================================
  33. ; Entry    Point    XRPOBJ                                  |
  34. ;==============================================================================
  35. ;                                          |
  36. ; This procedure loads and processes an    OBJ file (equivalent to    one object    |
  37. ; module).  The    actual processing is performed by subordinate modules, but    |
  38. ; this procedure scans the file, and invokes the appropriate subordinate      |
  39. ; dependent upon the type of object record found.                  |
  40. ;                                          |
  41. ; Entry    conventions:    Expects    the current file to be opened (FHAN).          |
  42. ;                                          |
  43. ; Returns:        None.  Will display message if invalid record type    |
  44. ;            found.                              |
  45. ;                                          |
  46. ;==============================================================================
  47. ;
  48.     EXTRN    XRHEDR:NEAR,XREXTN:NEAR,XRPUBL:NEAR
  49. ;
  50.     PUBLIC    XRPOBJ
  51. ;
  52. XRPOBJ    PROC    NEAR
  53. LP:    MOV    BX,FHAN            ;Load file handle
  54.     MOV    DX,OFFSET RCODE        ;Point to header area
  55.     MOV    CX,3
  56.     MOV    AH,3FH
  57.     INT    21H            ;Read in record    header
  58.     CMP    AX,CX
  59.     JE    NORM
  60. EXIT:    MOV    DX,OFFSET EMSG
  61.     MOV    AH,9
  62.     INT    21H
  63.     RET                ;Out of    data
  64. NORM:    MOV    CX,RLEN            ;Get length of data record
  65.     MOV    DX,OFFSET FBUF
  66.     MOV    AH,3FH
  67.     INT    21H            ;Read in object    record
  68.     CMP    AX,CX
  69.     JNE    EXIT            ;Out of    data
  70.     MOV    SI,OFFSET FBUF        ;Point to record
  71.     MOV    CX,RLEN            ;  and load record length
  72.     MOV    AL,RCODE        ;Get record type code
  73.     CMP    AL,80H
  74.     JNE    T1
  75.     CALL    XRHEDR            ;Process THEADR    record
  76.     JMP    LP
  77. T1:    CMP    AL,8AH
  78.     JNE    T2
  79.     RET                ;Found MODEND record, so exit
  80. T2:    CMP    AL,8CH
  81.     JNE    T3
  82.     CALL    XREXTN            ;Process EXTDEF    record
  83.     JMP    LP
  84. T3:    CMP    AL,90H
  85.     JNE    T4
  86.     CALL    XRPUBL            ;Process PUBDEF    record
  87.     JMP    LP
  88. T4:    MOV    DI,OFFSET VALID
  89.     MOV    CX,11
  90.     REPNE    SCASB            ;Check for valid code
  91.     JE    LP            ;Found one
  92.     XOR    AH,AH
  93.     MOV    CL,4
  94.     SHL    AX,CL
  95.     SHR    AL,CL
  96.     XCHG    AH,AL
  97.     CALL    CVRT
  98.     MOV    IMX,AL
  99.     MOV    AL,AH
  100.     CALL    CVRT
  101.     MOV    IMX+1,AL
  102.     MOV    DX,OFFSET IMSG
  103.     MOV    AH,9
  104.     INT    21H
  105.     JMP    LP
  106. XRPOBJ    ENDP
  107. ;
  108.     PUBLIC    CVRT
  109. ;
  110. CVRT    PROC    NEAR
  111.     CMP    AL,9
  112.     JBE    COK
  113.     ADD    AL,7
  114. COK:    ADD    AL,'0'
  115.     RET
  116. CVRT    ENDP
  117. ;
  118. CODE    ENDS
  119. ;
  120.     END
  121.